interpoly := proc (A, B)
	local poly,lvalues,resultat,lpols,i,longueur;
	if nops(A)<>nops(B) then error "Les listes ne sont pas de meme longueur!!"; fi; 
	if nops(A)<>nops({op(A)}) then error "Tous les elements de A ne sont pas distincts!!"; fi;
	longueur := nops (A);
	#Calcul de P
	poly:=1:
    poly:=expand(mul(X-A[i],i=1..longueur));
    #for i from 1 to longueur do
    #   poly:=expand(poly*(X-A[i]));
	#od;
	#lprint(poly);
	#Plus tard, comparer l'usage de la boucle ci-dessus avec la fonction mul
	#lpols:=[]:
	#for i from 1 to longueur do
    lpols:=[seq(quo(poly, X-A[i],X),i=1..longueur)]:
    #od;
	#lprint(lpols);
	lvalues:=[seq(eval(lpols[i],X=A[i]),i=1..longueur)]:
	#lprint(lvalues);
	#Plus tard on comparera l'usage de subs avec l'usage d'eval
    resultat:=0:
    for i from 1 to longueur do 
      resultat:=resultat+B[i]*lpols[i]/lvalues[i]:
	od:
    return resultat:
end;

#verifInter := proc (A,B,F)
#	local i;
#	for i from 1 to nops(A) do 
#		if eval(F,A[i])<>B[i] then return false;
#		fi;
#	od;
#	return true;
#end;



